package com.kexilo.core.common.annotation;

import java.lang.annotation.*;

/**
 * 字段加密注解
 * 
 * @author Kexilo
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Encrypted {
    
    /**
     * 加密算法类型
     */
    Algorithm algorithm() default Algorithm.AES;
    
    /**
     * 是否在JSON序列化时脱敏显示
     */
    boolean maskOnOutput() default false;
    
    /**
     * 脱敏字符
     */
    String maskChar() default "*";
    
    /**
     * 保留前几位明文
     */
    int keepPrefix() default 0;
    
    /**
     * 保留后几位明文
     */
    int keepSuffix() default 0;
    
    /**
     * 加密算法枚举
     */
    enum Algorithm {
        /**
         * AES加密
         */
        AES,
        
        /**
         * RSA加密
         */
        RSA,
        
        /**
         * DES加密
         */
        DES
    }
}
